import redis

# --- 配置 ---
REDIS_HOST = 'localhost'
REDIS_PORT = 6379

def verify_redis_data():
    """
    连接到 Redis 并查询指定社区的数据以进行验证。
    """
    try:
        r = redis.Redis(host=REDIS_HOST, port=REDIS_PORT, db=0, decode_responses=True)
        r.ping()
        print("✅ Redis 连接成功！")
    except Exception as e:
        print(f"❌ Redis 连接失败: {e}")
        return

    # --- 查询示例 ---
    
    # 1. 检查一个社区的所有数据
    community_id_to_check = 1
    key_to_check = f"community:{community_id_to_check}:netflow"
    
    print(f"\n--- 正在查询社区 {community_id_to_check} 的所有净流量数据 ---")
    # HGETALL 会返回一个包含所有字段和值的字典
    all_flows = r.hgetall(key_to_check)
    
    if not all_flows:
        print(f"在 Redis 中未找到社区 {community_id_to_check} 的数据。")
        return
        
    print(f"成功获取到社区 {community_id_to_check} 的 {len(all_flows)} 条时间槽数据。")
    print("前 5 条数据示例:")
    for i, (timeslot, netflow) in enumerate(all_flows.items()):
        if i >= 5:
            break
        print(f"  - 时间槽: {timeslot}, 净流量: {netflow}")

    # 2. 检查一个具体的时间槽
    timeslot_to_check = "2021-05-01T00:00:00"
    print(f"\n--- 正在查询社区 {community_id_to_check} 在 {timeslot_to_check} 的净流量 ---")
    
    # HGET 用于获取单个字段的值
    specific_flow = r.hget(key_to_check, timeslot_to_check)
    
    if specific_flow is not None:
        print(f"✅ 查询成功: 净流量为 {specific_flow}")
    else:
        print(f"ℹ️ 在该时间槽未找到数据，意味着净流量为 0。")

    # 3. 检查一个不存在的时间槽
    non_existent_timeslot = "2021-05-12T03:00:00" # 假设这个时间槽是空闲的
    print(f"\n--- 正在查询一个可能空闲的时间槽 {non_existent_timeslot} ---")
    non_existent_flow = r.hget(key_to_check, non_existent_timeslot)
    if non_existent_flow is None:
        print(f"✅ 查询结果为 None，符合预期。")
    else:
        print(f"❌ 查询到了数据 {non_existent_flow}，与预期不符。")


if __name__ == "__main__":
    verify_redis_data()